package exception;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 * @author げっしょく
 * @date 2021/7/24
 */
public class exam {
    public static void main(String[] args) {
        //test1();
        //test2();
        //test3();
        //	1.定义Student类
        //		属性:
        //			姓名：String name
        //			年龄：int age
        //			成绩：int score
        //		行为:
        //			空参构造方法
        //			有参构造方法
        //			set和get方法
        //	2.定义测试类,进行测试
        //		(1)创建5个学生对象存入ArrayList集合中
        //		(2)打印最高分的学员姓名、年龄、成绩  [要求封装1个方法  参数是集合对象   返回值类型为Student]
        //		(3)打印5个学生的总成绩和平均分		 [要求封装一个方法完成]
        //		(4)打印不及格的学员信息及数量		 [要求封装一个方法完成]
        ArrayList<Student> list = new ArrayList<>();
        Student stu1 = new Student("张三", 19, 60);
        Student stu2 = new Student("李四", 21, 90);
        Student stu3 = new Student("王五", 19, 64);
        Student stu4 = new Student("邹清泉", 21, 0);
        Student stu5 = new Student("牛马", 20, 100);
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);
        list.add(stu4);
        list.add(stu5);
        Student stu = StudentMaxScore(list);
        System.out.println("获得最高分的人名字是："+ stu.getName()+"， 年龄是："+stu.getAge()+"， 分数为："+stu.getScore());
        StudentSum(list);
        StudentPass(list);
    }

    private static void StudentPass(ArrayList<Student> list) {
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getScore() < 60) {
                System.out.println("没及格的人名字是："+ stu.getName()+"， 年龄是："+stu.getAge()+"， 分数为："+stu.getScore());
                count++;
            }
        }
        System.out.println("没及格的人数有"+count+"个");
    }

    private static void StudentSum(ArrayList<Student> list) {
        double sum = 0;
        double mean = 0;
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            sum += stu.getScore();
        }
        System.out.println("这五个人的总分是：" + sum);
        mean = sum/list.size();
        System.out.println("这五个人的平均分为：" + mean);
    }

    private static Student StudentMaxScore(ArrayList<Student> list) {
        Student stu = list.get(0);
        for (int i = 1; i < list.size(); i++) {
            Student stu1 = list.get(i);
            if(stu.getScore() < stu1.getScore()){
                stu = stu1;
            }
        }
        return stu;
    }

    private static void test3() {
        //键盘录入一个数据,判断是否在集合中存在 (注意 请分别使用集合的 contains 方法 和自己写代码实现)
        Scanner sc = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<>();
        list.add("马保国");
        list.add("张三丰");
        list.add("老天师");
        list.add("张无忌");
        list.add("杨过");
        list.add("张芷箬");
        list.add("炼铜术士");
        System.out.println("请输入你要寻找的数据：");
        String s = sc.next();
        boolean contains = list.contains(s);
        if (contains) {
            System.out.println("您录入的数据在集合中存在");
        }else{
            System.out.println("您录入的数据在集合中不存在");
        }
        for (int i = 0; i < list.size() ; i++) {
            if(s.equals(list.get(i))){
                System.out.println("您录入的数据在集合中存在");
                break;
            }
            if(i == list.size() - 1){
                System.out.println("您录入的数据在集合中不存在");
            }
        }
    }

    private static void test2() {
        /*
                已知集合的元素为
            aaa
            bbb
            ccc
            aaa
            bbb
            bbb
            通过今天所学内容去除集合的重复元素,分别使用迭代器和增强for循环遍历集合
            tips:去除之后集合的元素应该为
                aaa
                bbb
                ccc
         */
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("aaa");
        list.add("bbb");
        list.add("bbb");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if(i != list.size() - 1) {
                for (int j = i + 1; j < list.size(); j++) {
                    String s1 = list.get(j);
                    if(s.equals(s1)){
                        list.remove(j);
                        j--;
                    }
                }
            }
        }

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        for (String s : list) {
            System.out.println(s);

        }
    }

    private static void test1() {
        //(1)定义List集合，存入多个字符串
        //(2)删除集合中所有字符串"def"
        //(3)然后再利用迭代器遍历集合元素并输出
        ArrayList<String> list = new ArrayList<>();
        list.add("def");
        list.add("187");
        list.add("364");
        list.add("def");
        list.add("7");
        list.add("314");
        list.add("def");
        list.add("def");
        list.removeIf(s -> {
            if("def".equals(s)){return true ;}
            return false;
        });
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}
